20417
22009
Tähän kysymykseen on jo annettu vastauksia täällä:
Käännä merkkijono Pythonissa
(29 vastausta)
Suljettu 4 vuotta sitten.
Yritän muuttaa merkkijonoa ja käyttää alla olevaa koodia, mutta tuloksena oleva käänteisen luettelon arvo on Ei mitään.
Koodi:
str_a = 'Tämä on sekoitus'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .liity (rev_word)
Se palauttaa TypeError-arvon. Miksi? 
.reverse () palauttaa Ei mitään. Siksi sinun ei pitäisi määrittää sitä muuttujalle.
Käytä tätä sen sijaan:
stra = 'Tämä on merkkijono'
revword = stra.split ()
revword.reverse ()
revword = ''. liittyä (revword)
Olen suorittanut IDEOne-koodin puolestasi, jotta näet tuloksen. (Huomaa myös, että lähtö on stringaisThis; voit käyttää sen sijaan '' .join (revword) välilyönnillä.)
Huomaa myös, että antamasi menetelmä kääntää vain sanat, ei tekstiä. @ ron.rothman toimitti linkin, joka kuvaa yksityiskohtaisesti merkkijonon kääntämisen kokonaisuudessaan.
|
Tämä on henkilökohtainen suosikkini tapa vaihtaa merkkijono:
stra = "Tämä on merkkijono"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
tai, jos haluat muuttaa sanajärjestystä:
revword = "" .liity (stra.split () [:: - 1])
print (revword) # "merkkijono a on tämä"
:)
|
Erilaiset merkkijonon peruutukset:
instring = 'Tämä on merkkijono'
reversedstring = käskee [:: - 1]
tulosta käänteinen merkkijono # gnirts a si sihT
wordsreversed = '' .liity (sana [:: - 1] sanalle instring.split ())
tulosta sanat käännetty # sihT si a gnirts
revwordorder = '' .liity (sana sanasta instring.split () [:: - 1])
tulosta revwordorder # merkkijono a on tämä
revwordandorder = '' .liity (sana [:: - 1] sanalle instring.split () [:: - 1])
tulosta revwordandorder # gnirts a si sihT
|
Tulevaa käyttöä varten, kun objektilla on menetelmä, kuten [] .reverse (), se yleensä suorittaa kyseisen objektin toiminnon (eli luettelo on lajiteltu eikä palauta mitään, ei mitään), toisin kuin sisäänrakennetut toiminnot, kuten lajiteltu, jotka suorittavat toiminnon objekti ja palauttaa arvon (ts. lajiteltu luettelo)
|
>>> s = 'tämä on merkkijono'
>>> s [:: - 1]
"gnirts a si siht"
>>> '' .liity (käänteinen)
"gnirts a si siht"
|
For silmukka toistaa merkkijonon lopusta (viimeinen kirjain) alkuun (ensimmäinen kirjain)
>>> s = 'Voit kokeilla myös tätä:]'
>>> rev = ''
>>> i alueella (len (s) - 1, -1, -1):
... kierros + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Kommenttien ja muiden vastausten perusteella:
str_a = 'tämä on merkkijono'
rev_word = '' .liity (päinvastoin (str_a.split ()))
Menetelmäketju toimii kuitenkin Pythonissa ...
|
Lista voidaan kääntää useammalla kuin yhdellä tavalla. Kuten aikaisemmissa vastauksissa mainittiin, kaksi on hyvin näkyviä, toisessa käänteinen () -funktio ja kahdessa viipalointiominaisuus. Annan oivalluksia siitä, kumpi meidän pitäisi olla parempi.
Meidän tulisi aina käyttää käänteistä () -toimintoa Python-luettelon peruuttamiseksi. Kaksi syytä, yksi paikanvaihto paikalla ja kaksi nopeammin kuin muut.
Minulla on joitain lukuja tukemaan vastaustani,
Kohdassa [15]: len (l)
Ulos [15]: 1000
Kohdassa [16]:% timeit -n1 l. Käänteinen ()
1 silmukka, paras 3: 7,87 µs per silmukka
Kohdassa [17]:% timeit -n1 l [:: - 1]
1 silmukka, paras 3: 10 µs per silmukka
1000 kokonaislukulistalle käänteinen () -toiminto toimi paremmin kuin viipalointi.
|
Eikö vastausta etsit? Selaa muita pythonilla merkittyjä kysymyksiä tai esitä oma kysymyksesi.